package com.Hsu.mq.mqserver.mapper;

import com.Hsu.mq.mqserver.core.Binding;
import com.Hsu.mq.mqserver.core.Exchange;
import com.Hsu.mq.mqserver.core.MSGQueue;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author Hsu琛君珩
 * @ClassName:MetaMapper
 * @date 2024-02-12
 * @apiNote
 * @Version: v1.0
 */

@Mapper
public interface MetaMapper {
    //三个核心建表方法
    void createExchangeTable();
    void createQueueTable();
    void createBindingTable();

    //以上三个基本概念的 插入和删除
    //关于 交换机 和 队列 两个表都是以 name 作为主键，因此可以直接按照这个参数删除
    //而 绑定 没有，删除是针对 exchangeName 和 queueName 两个维度进行筛选
    void insertExchange(Exchange exchange);
    List<Exchange> selectAllExchanges();
    void deleteExchange(String exchangeName);
    void insertQueue(MSGQueue queue);
    List<MSGQueue> selectAllQueues();
    void deleteQueue(String queueName);
    void insertBinding(Binding binding);
    List<Binding> selectAllBindings();
    void deleteBinding(Binding binding);
}
